A fault-tolerant network is designed so that the network can continue to be operational in the event of a failure of a component, even if at a reduced capacity. For example, when a link of a network fails, a fault-tolerant network can continue to operate without using the link. A load-balanced network is designed to balance traffic across different links of the network to evenly distribute the traffic across the links, which can provide an overall increase in available bandwidth and throughput. A loop-free network is designed to prevent network traffic from traveling in a loop without reaching its intended destination.
Conventionally, a fault-tolerant, load-balanced, and loop-free network is implemented using layer 3 switches and/or metadata associated with packets transmitted through the network. Layer 3 switches, relative to layer 2 switches, and the use of metadata, add cost in terms of financial cost, complexity, and processing time during operation that can affect data rates. Additionally, networks that use layer 2 switches and do not need to use metadata in association with packets would also benefit from fault-tolerant, load-balanced, and loop-free operation. Accordingly, there is a need to provide a network that is fault-tolerant, load balanced, and loop-free that can be implemented using layer 2 switches. Additionally, there is a need for such a network to route packets through the network using layer 2 information provided in the packets themselves without a need for metadata.